/**
 * 
 */
package com.gov.ec.rsv.convertidores;

import java.util.ArrayList;
import java.util.List;

import javax.faces.application.FacesMessage;
import javax.faces.component.UIComponent;
import javax.faces.context.FacesContext;
import javax.faces.convert.Converter;
import javax.faces.convert.ConverterException;
import javax.naming.InitialContext;
import javax.naming.NamingException;

import com.gov.ec.rsv.interfaces.ICrudDao;
import com.gov.ec.rsv.modelo.Institucion;

/**
 *  Esta clase representa el convertidor para el objeto
 *  Institucion para validar el autocomplete
 *	@author martosfre
 *	Apr 7, 2011
 *  see www.matoosfe.com
 */
public class ConvertidorInstitucion implements Converter {
	
    public static List<Object>  institucion;
    public static List<Institucion> listaInstitucion;
	private ICrudDao crudControlador;
	/**
	 * Inicializo el convertidor llamando al EJB a través
	 * del JNDI 
	 */
	public ConvertidorInstitucion() {
		try {
			InitialContext ic = new InitialContext();
			crudControlador= (ICrudDao) ic.lookup("RSVCCIGM/adminCrud/local");   
			//Cargo las antenas
			institucion = crudControlador.consultarTodo(new Institucion());
			listaInstitucion = new ArrayList<Institucion>();
			for (Object antTmp : institucion) {
				Institucion ant = (Institucion)antTmp;
				listaInstitucion.add(ant);
			}
			
		} catch (NamingException e) {
			e.printStackTrace();
		}
	}

//	/* (non-Javadoc)
//	 * @see javax.faces.convert.Converter#getAsObject(javax.faces.context.FacesContext, javax.faces.component.UIComponent, java.lang.String)
//	 */
//	@Override
//	public Object getAsObject(FacesContext fcx, UIComponent arg1, String value) {
//		if (value.trim().equals("")) {
//			return null;
//		} else {
//			try {
//				int codigo = Integer.parseInt(value);
//				for (Institucion ant: listaInstitucion) {
//					if (ant.getIdInstitucion() == codigo) {
//						return ant;
//					}
//				}
//
//			} catch(NumberFormatException exception) {
//				throw new ConverterException(
//						new FacesMessage(FacesMessage.SEVERITY_ERROR,
//								"Error Conversión", "Antena Incorrecto"));
//			}
//		}
//
//		return null;
//	}
//
//	/* (non-Javadoc)
//	 * @see javax.faces.convert.Converter#getAsString(javax.faces.context.FacesContext, javax.faces.component.UIComponent, java.lang.Object)
//	 */
//	@Override
//	public String getAsString(FacesContext fcx, UIComponent componente, Object value) {
//		if (value == null || value.equals("")) {
//			return "";
//		} else {
//			return String.valueOf(((Institucion) value).getIdInstitucion());
//		}
//	}

	
	
	
	
	
	public Object getAsObject(FacesContext facesContext, UIComponent component, String submittedValue) {  
        if (submittedValue.trim().equals("")) {  
            return null;  
        } else {  
            try {  
                int number = Integer.parseInt(submittedValue);  
  
                for (Institucion p : listaInstitucion) {  
                    if (p.getIdInstitucion() == number) {  
                        return p;  
                    }  
                }  
  
            } catch(NumberFormatException exception) {  
                throw new ConverterException(new FacesMessage(FacesMessage.SEVERITY_ERROR, "Conversion Error", "Not a valid player"));  
            }  
        }  
  
        return null;  
    }  
  
    public String getAsString(FacesContext facesContext, UIComponent component, Object value) {  
        if (value == null || value.equals("")) {  
            return "";  
        } else {  
            return String.valueOf(((Institucion) value).getIdInstitucion());  
        }  
    }  
	
	
	
	
	

}
